package com.itheima.controller;

import com.itheima.entity.Dept;
import com.itheima.entity.Emp;
import com.itheima.entity.Result;
import com.itheima.mapper.EmpMapper;
import com.itheima.service.DeptService;
import lombok.extern.slf4j.Slf4j;
import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Update;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/*
 *    处理所有员工相关请求的处理器类：指责单一
 *    1.处理前端请求
 *    2.调用业务层实现具体的功能
 *    3.封装处理结果
 * */
@Slf4j
@RestController
@RequestMapping("/depts")
public class DeptController {
    @Autowired
    DeptService deptService;



    /*
     * 查询部门列表：请求路径/请求方式/请求参数/响应结果
     * */
    @GetMapping
    public Result listDept() {
        //1. 接收请求参数
        System.out.println("3.放行前~~~~~");
        //2.调用业务层，实现部门列表查询业务功能
        List<Dept> deptList = deptService.ListDept();
        //3.封装并返回查询结果
        return Result.success(deptList); // result[code=1,msg=success,data=查询到的部门列表]
    }

    /*
     *  根据指定的id删除部门
     * */
    @DeleteMapping("{id}")
    public Result remove(@PathVariable Integer id) throws ClassNotFoundException {
        //1. 接受请求参数: 请求路径,@PathVariable  + 变量

        //2. 调用业务层，实现删除指定部门的功能
        deptService.removeById(id);

        //3. 封装处理结果数据

        return Result.success();//code=1,msg=success,data=null
    }

    /*
     * 添加部门
     *
     * */
    @PostMapping
    public Result save(@RequestBody Dept dept) {
        //1. 接受请求参数: json格式请求参数(@RequestBody  + 实体类)

        //2. 调用业务层，来实现添加部门的功能
        deptService.saveDept(dept);

        //3. 封装处理结果数据
        return Result.success();//code=1,msg=success,data=null
    }
   /* // 根据id查询部门
    @GetMapping("{id}")
    public Result listDept(@PathVariable Integer id) {

        deptService.listDept(id);


        return Result.success();//code=1,msg=success,data=null
    }*/

    /*
     *根据id查询
     *
     * */
    @GetMapping("/{id}")
    public Result selectbyid(@PathVariable Integer id){
        Dept d = deptService.selectbd(id);
        return Result.success(d);
    }
    /*
     * 修改部门
     *
     * */
    @PutMapping()
    public Result putdept(@RequestBody Dept dept){
        deptService.update(dept);
        return Result.success();
    }
}
